<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
      <title>Class Mat4d | HiAPI-C# 2025 </title>
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta name="title" content="Class Mat4d | HiAPI-C# 2025 ">
      
      <meta name="description" content="4x4 Matrix.">
      <link rel="icon" href="../img/HiAPI.favicon.ico">
      <link rel="stylesheet" href="../public/docfx.min.css">
      <link rel="stylesheet" href="../public/main.css">
      <meta name="docfx:navrel" content="../toc.html">
      <meta name="docfx:tocrel" content="toc.html">
      
      <meta name="docfx:rel" content="../">
      
      
      
      <meta name="loc:inThisArticle" content="In this article">
      <meta name="loc:searchResultsCount" content="{count} results for &quot;{query}&quot;">
      <meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
      <meta name="loc:tocFilter" content="Filter by title">
      <meta name="loc:nextArticle" content="Next">
      <meta name="loc:prevArticle" content="Previous">
      <meta name="loc:themeLight" content="Light">
      <meta name="loc:themeDark" content="Dark">
      <meta name="loc:themeAuto" content="Auto">
      <meta name="loc:changeTheme" content="Change theme">
      <meta name="loc:copy" content="Copy">
      <meta name="loc:downloadPdf" content="Download PDF">

      <script type="module" src="./../public/docfx.min.js"></script>

      <script>
        const theme = localStorage.getItem('theme') || 'auto'
        document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
      </script>

  </head>

  <body class="tex2jax_ignore" data-layout="" data-yaml-mime="ManagedReference">
    <header class="bg-body border-bottom">
      <nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
        <div class="container-xxl flex-nowrap">
          <a class="navbar-brand" href="../index.html">
            <img id="logo" class="svg" src="../img/HiAPI.logo.png" alt="">
            
          </a>
          <button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
            <i class="bi bi-three-dots"></i>
          </button>
          <div class="collapse navbar-collapse" id="navpanel">
            <div id="navbar">
              <form class="search" role="search" id="search">
                <i class="bi bi-search"></i>
                <input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
              </form>
            </div>
          </div>
        </div>
      </nav>
    </header>

    <main class="container-xxl">
      <div class="toc-offcanvas">
        <div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
          <div class="offcanvas-header">
            <h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
            <button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
          </div>
          <div class="offcanvas-body">
            <nav class="toc" id="toc"></nav>
          </div>
        </div>
      </div>

      <div class="content">
        <div class="actionbar">
          <button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
            <i class="bi bi-list"></i>
          </button>

          <nav id="breadcrumb"></nav>
        </div>

        <article data-uid="Hi.Geom.Mat4d">



  <h1 id="Hi_Geom_Mat4d" data-uid="Hi.Geom.Mat4d" class="text-break">
Class Mat4d  
  </h1>

  <div class="facts text-secondary">
    <dl><dt>Namespace</dt><dd><a class="xref" href="Hi.html">Hi</a>.<a class="xref" href="Hi.Geom.html">Geom</a></dd></dl>
  <dl><dt>Assembly</dt><dd>HiGeom.dll</dd></dl>
  </div>

  <div class="markdown summary"><p>4x4 Matrix.</p>
</div>
  <div class="markdown conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public class Mat4d : IEquatable&lt;Mat4d&gt;, IBinaryIo, IWriteBin</code></pre>
  </div>




  <dl class="typelist inheritance">
    <dt>Inheritance</dt>
    <dd>
      <div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></div>
      <div><span class="xref">Mat4d</span></div>
    </dd>
  </dl>

  <dl class="typelist implements">
    <dt>Implements</dt>
    <dd>
      <div><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.iequatable-1">IEquatable</a>&lt;<a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a>&gt;</div>
      <div><a class="xref" href="Hi.Common.IBinaryIo.html">IBinaryIo</a></div>
      <div><a class="xref" href="Hi.Common.IWriteBin.html">IWriteBin</a></div>
    </dd>
  </dl>


  <dl class="typelist inheritedMembers">
    <dt>Inherited Members</dt>
    <dd>
    <div>
      <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.equals#system-object-equals(system-object-system-object)">object.Equals(object, object)</a>
    </div>
    <div>
      <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.gettype">object.GetType()</a>
    </div>
    <div>
      <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.memberwiseclone">object.MemberwiseClone()</a>
    </div>
    <div>
      <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object.referenceequals">object.ReferenceEquals(object, object)</a>
    </div>
  </dd></dl>

  <dl class="typelist extensionMethods">
    <dt>Extension Methods</dt>
    <dd>
  <div>
      <a class="xref" href="Hi.Common.BinIoUtil.html#Hi_Common_BinIoUtil_ToBytes_Hi_Common_IWriteBin_">BinIoUtil.ToBytes(IWriteBin)</a>
  </div>
  <div>
      <a class="xref" href="Hi.Common.DuplicateUtil.html#Hi_Common_DuplicateUtil_TryDuplicate__1___0_System_Object___">DuplicateUtil.TryDuplicate&lt;TSelf&gt;(TSelf, params object[])</a>
  </div>
  <div>
      <a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__1___0_System_Action___0__">InvokeUtil.SelfInvoke&lt;TSrc&gt;(TSrc, Action&lt;TSrc&gt;)</a>
  </div>
  <div>
      <a class="xref" href="Hi.Common.InvokeUtil.html#Hi_Common_InvokeUtil_SelfInvoke__2___0_System_Func___0___1__">InvokeUtil.SelfInvoke&lt;TSrc, TDst&gt;(TSrc, Func&lt;TSrc, TDst&gt;)</a>
  </div>
  <div>
      <a class="xref" href="Hi.Coloring.ColorUtil.html#Hi_Coloring_ColorUtil_GetGloomyColor_System_Object_System_Double_System_Double_">ColorUtil.GetGloomyColor(object, double, double)</a>
  </div>
  <div>
      <a class="xref" href="Hi.Common.NameUtil.html#Hi_Common_NameUtil_GetSelectionName_System_Object_">NameUtil.GetSelectionName(object)</a>
  </div>
  <div>
      <a class="xref" href="Hi.Common.StringUtil.html#Hi_Common_StringUtil_GetPropertyStringIfToStringNotOverloaded_System_Object_System_Boolean_System_Boolean_">StringUtil.GetPropertyStringIfToStringNotOverloaded(object, bool, bool)</a>
  </div>
  <div>
      <a class="xref" href="Hi.Parallels.LockUtil.html#Hi_Parallels_LockUtil_Lock_System_Object_">LockUtil.Lock(object)</a>
  </div>
  </dd></dl>





  <h2 class="section" id="constructors">Constructors
</h2>


  <a id="Hi_Geom_Mat4d__ctor_" data-uid="Hi.Geom.Mat4d.#ctor*"></a>

  <h3 id="Hi_Geom_Mat4d__ctor" data-uid="Hi.Geom.Mat4d.#ctor">
  Mat4d()
  
  </h3>

  <div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a> class.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d()</code></pre>
  </div>













  <a id="Hi_Geom_Mat4d__ctor_" data-uid="Hi.Geom.Mat4d.#ctor*"></a>

  <h3 id="Hi_Geom_Mat4d__ctor_Hi_Geom_AxisAngle4d_" data-uid="Hi.Geom.Mat4d.#ctor(Hi.Geom.AxisAngle4d)">
  Mat4d(AxisAngle4d)
  
  </h3>

  <div class="markdown level1 summary"><p>Set this matrix to rotation matrix.
The matrix is rotate along axis with given radian.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d(AxisAngle4d src)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>src</code> <a class="xref" href="Hi.Geom.AxisAngle4d.html">AxisAngle4d</a></dt>
    <dd><p>src</p>
</dd>
  </dl>












  <a id="Hi_Geom_Mat4d__ctor_" data-uid="Hi.Geom.Mat4d.#ctor*"></a>

  <h3 id="Hi_Geom_Mat4d__ctor_Hi_Geom_AxisAngle4d_Hi_Geom_Vec3d_" data-uid="Hi.Geom.Mat4d.#ctor(Hi.Geom.AxisAngle4d,Hi.Geom.Vec3d)">
  Mat4d(AxisAngle4d, Vec3d)
  
  </h3>

  <div class="markdown level1 summary"><p>Set this matrix to rotation matrix.
The matrix is rotate along axis with given radian.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d(AxisAngle4d src, Vec3d pivot)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>src</code> <a class="xref" href="Hi.Geom.AxisAngle4d.html">AxisAngle4d</a></dt>
    <dd><p>src</p>
</dd>
    <dt><code>pivot</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
    <dd><p>rotation pivot</p>
</dd>
  </dl>












  <a id="Hi_Geom_Mat4d__ctor_" data-uid="Hi.Geom.Mat4d.#ctor*"></a>

  <h3 id="Hi_Geom_Mat4d__ctor_Hi_Geom_Mat4d_" data-uid="Hi.Geom.Mat4d.#ctor(Hi.Geom.Mat4d)">
  Mat4d(Mat4d)
  
  </h3>

  <div class="markdown level1 summary"><p>copy constructor</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d(Mat4d src)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>src</code> <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>src</p>
</dd>
  </dl>












  <a id="Hi_Geom_Mat4d__ctor_" data-uid="Hi.Geom.Mat4d.#ctor*"></a>

  <h3 id="Hi_Geom_Mat4d__ctor_Hi_Geom_Vec3d_" data-uid="Hi.Geom.Mat4d.#ctor(Hi.Geom.Vec3d)">
  Mat4d(Vec3d)
  
  </h3>

  <div class="markdown level1 summary"><p>Set this matrix to translation matrix.
m(3,0)=trans.x; m(3,1)=trans.y; m(3,2)=trans.z.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d(Vec3d trans)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>trans</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
    <dd><p>translation</p>
</dd>
  </dl>












  <a id="Hi_Geom_Mat4d__ctor_" data-uid="Hi.Geom.Mat4d.#ctor*"></a>

  <h3 id="Hi_Geom_Mat4d__ctor_Hi_Geom_Vec3d_Hi_Geom_Vec3d_Hi_Geom_Vec3d_Hi_Geom_Mat4d_IndexFlag_" data-uid="Hi.Geom.Mat4d.#ctor(Hi.Geom.Vec3d,Hi.Geom.Vec3d,Hi.Geom.Vec3d,Hi.Geom.Mat4d.IndexFlag)">
  Mat4d(Vec3d, Vec3d, Vec3d, IndexFlag)
  
  </h3>

  <div class="markdown level1 summary"><p>Initializes a new instance of the <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a> class from three vectors.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d(Vec3d v0, Vec3d v1, Vec3d v2, Mat4d.IndexFlag indexFlag = IndexFlag.ByColumn)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>v0</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
    <dd><p>The first vector.</p>
</dd>
    <dt><code>v1</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
    <dd><p>The second vector.</p>
</dd>
    <dt><code>v2</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
    <dd><p>The third vector.</p>
</dd>
    <dt><code>indexFlag</code> <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a>.<a class="xref" href="Hi.Geom.Mat4d.IndexFlag.html">IndexFlag</a></dt>
    <dd><p>Determines whether vectors are used as columns or rows in the matrix.</p>
</dd>
  </dl>












  <a id="Hi_Geom_Mat4d__ctor_" data-uid="Hi.Geom.Mat4d.#ctor*"></a>

  <h3 id="Hi_Geom_Mat4d__ctor_Hi_Geom_Vec3d_System_Double_" data-uid="Hi.Geom.Mat4d.#ctor(Hi.Geom.Vec3d,System.Double)">
  Mat4d(Vec3d, double)
  
  </h3>

  <div class="markdown level1 summary"><p>Set this matrix to rotation matrix.
The matrix is rotate along axis with given radian.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d(Vec3d axis, double rad)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>axis</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
    <dd><p>rotation axis</p>
</dd>
    <dt><code>rad</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>radian</p>
</dd>
  </dl>












  <a id="Hi_Geom_Mat4d__ctor_" data-uid="Hi.Geom.Mat4d.#ctor*"></a>

  <h3 id="Hi_Geom_Mat4d__ctor_Hi_Geom_Vec3d_System_Double_Hi_Geom_Vec3d_" data-uid="Hi.Geom.Mat4d.#ctor(Hi.Geom.Vec3d,System.Double,Hi.Geom.Vec3d)">
  Mat4d(Vec3d, double, Vec3d)
  
  </h3>

  <div class="markdown level1 summary"><p>A matrix rotate at <code class="paramref">pivot</code> along <code class="paramref">axis</code> by angle <code class="paramref">rad</code>.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d(Vec3d axis, double rad, Vec3d pivot)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>axis</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
    <dd><p>rotate axis</p>
</dd>
    <dt><code>rad</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>angle</p>
</dd>
    <dt><code>pivot</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
    <dd><p>rotate pivot</p>
</dd>
  </dl>












  <a id="Hi_Geom_Mat4d__ctor_" data-uid="Hi.Geom.Mat4d.#ctor*"></a>

  <h3 id="Hi_Geom_Mat4d__ctor_Hi_Native_mat4d_" data-uid="Hi.Geom.Mat4d.#ctor(Hi.Native.mat4d)">
  Mat4d(mat4d)
  
  </h3>

  <div class="markdown level1 summary"><p>Ctor by <a class="xref" href="Hi.Geom.Mat4d.html#Hi_Geom_Mat4d_Set_Hi_Native_mat4d_">Set(mat4d)</a>.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d(mat4d src)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>src</code> <a class="xref" href="Hi.Native.mat4d.html">mat4d</a></dt>
    <dd><p>src</p>
</dd>
  </dl>












  <a id="Hi_Geom_Mat4d__ctor_" data-uid="Hi.Geom.Mat4d.#ctor*"></a>

  <h3 id="Hi_Geom_Mat4d__ctor_System_Double_" data-uid="Hi.Geom.Mat4d.#ctor(System.Double)">
  Mat4d(double)
  
  </h3>

  <div class="markdown level1 summary"><p>a scale matrix which is I*scale.
Where I is an identity matrix.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d(double scale)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>scale</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>scale</p>
</dd>
  </dl>












  <a id="Hi_Geom_Mat4d__ctor_" data-uid="Hi.Geom.Mat4d.#ctor*"></a>

  <h3 id="Hi_Geom_Mat4d__ctor_System_Double_System_Double_System_Double_System_Double_System_Double_System_Double_System_Double_System_Double_System_Double_System_Double_System_Double_System_Double_System_Double_System_Double_System_Double_System_Double_" data-uid="Hi.Geom.Mat4d.#ctor(System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double)">
  Mat4d(double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double)
  
  </h3>

  <div class="markdown level1 summary"><p>constructor</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d(double m00, double m01, double m02, double m03, double m10, double m11, double m12, double m13, double m20, double m21, double m22, double m23, double m30, double m31, double m32, double m33)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>m00</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (0,0)</p>
</dd>
    <dt><code>m01</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (0,1)</p>
</dd>
    <dt><code>m02</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (0,2)</p>
</dd>
    <dt><code>m03</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (0,3)</p>
</dd>
    <dt><code>m10</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (1,0)</p>
</dd>
    <dt><code>m11</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (1,1)</p>
</dd>
    <dt><code>m12</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (1,2)</p>
</dd>
    <dt><code>m13</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (1,3)</p>
</dd>
    <dt><code>m20</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (2,0)</p>
</dd>
    <dt><code>m21</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (2,1)</p>
</dd>
    <dt><code>m22</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (2,2)</p>
</dd>
    <dt><code>m23</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (2,3)</p>
</dd>
    <dt><code>m30</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (3,0)</p>
</dd>
    <dt><code>m31</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (3,1)</p>
</dd>
    <dt><code>m32</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (3,2)</p>
</dd>
    <dt><code>m33</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (3,3)</p>
</dd>
  </dl>












  <a id="Hi_Geom_Mat4d__ctor_" data-uid="Hi.Geom.Mat4d.#ctor*"></a>

  <h3 id="Hi_Geom_Mat4d__ctor_System_Double___" data-uid="Hi.Geom.Mat4d.#ctor(System.Double[])">
  Mat4d(double[])
  
  </h3>

  <div class="markdown level1 summary"><p>constructor</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d(double[] src)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>src</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>[]</dt>
    <dd><p>src</p>
</dd>
  </dl>












  <a id="Hi_Geom_Mat4d__ctor_" data-uid="Hi.Geom.Mat4d.#ctor*"></a>

  <h3 id="Hi_Geom_Mat4d__ctor_System_IO_BinaryReader_" data-uid="Hi.Geom.Mat4d.#ctor(System.IO.BinaryReader)">
  Mat4d(BinaryReader)
  
  </h3>

  <div class="markdown level1 summary"><p>Ctor.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d(BinaryReader reader)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>reader</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.io.binaryreader">BinaryReader</a></dt>
    <dd><p>reader</p>
</dd>
  </dl>












  <a id="Hi_Geom_Mat4d__ctor_" data-uid="Hi.Geom.Mat4d.#ctor*"></a>

  <h3 id="Hi_Geom_Mat4d__ctor_System_String_" data-uid="Hi.Geom.Mat4d.#ctor(System.String)">
  Mat4d(string)
  
  </h3>

  <div class="markdown level1 summary"><p>Ctor by <a class="xref" href="Hi.Geom.Mat4d.html#Hi_Geom_Mat4d_Set_System_String_">Set(string)</a>.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d(string str)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>str</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
    <dd><p>src</p>
</dd>
  </dl>












  <h2 class="section" id="fields">Fields
</h2>



  <h3 id="Hi_Geom_Mat4d_m" data-uid="Hi.Geom.Mat4d.m">
  m
  
  </h3>

  <div class="markdown level1 summary"><p>Column-major matrix in form of array.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public double[] m</code></pre>
  </div>




  <h4 class="section">Field Value</h4>
  <dl class="parameters">
    <dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a>[]</dt>
    <dd></dd>
  </dl>









  <h2 class="section" id="properties">Properties
</h2>


  <a id="Hi_Geom_Mat4d_AxialNormal_" data-uid="Hi.Geom.Mat4d.AxialNormal*"></a>

  <h3 id="Hi_Geom_Mat4d_AxialNormal" data-uid="Hi.Geom.Mat4d.AxialNormal">
  AxialNormal
  
  </h3>

  <div class="markdown level1 summary"><p><a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a> on 2th row. It usually is tool normal.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Vec3d AxialNormal { get; }</code></pre>
  </div>





  <h4 class="section">Property Value</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
    <dd></dd>
  </dl>








  <a id="Hi_Geom_Mat4d_AxisAngle_" data-uid="Hi.Geom.Mat4d.AxisAngle*"></a>

  <h3 id="Hi_Geom_Mat4d_AxisAngle" data-uid="Hi.Geom.Mat4d.AxisAngle">
  AxisAngle
  
  </h3>

  <div class="markdown level1 summary"><p>Gets the axis-angle representation of the rotation component of this matrix.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public AxisAngle4d AxisAngle { get; }</code></pre>
  </div>





  <h4 class="section">Property Value</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.AxisAngle4d.html">AxisAngle4d</a></dt>
    <dd></dd>
  </dl>








  <a id="Hi_Geom_Mat4d_Determinant_" data-uid="Hi.Geom.Mat4d.Determinant*"></a>

  <h3 id="Hi_Geom_Mat4d_Determinant" data-uid="Hi.Geom.Mat4d.Determinant">
  Determinant
  
  </h3>

  <div class="markdown level1 summary"><p>Gets the determinant of this matrix.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public double Determinant { get; }</code></pre>
  </div>





  <h4 class="section">Property Value</h4>
  <dl class="parameters">
    <dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>The determinant value.</p>
</dd>
  </dl>








  <a id="Hi_Geom_Mat4d_Idt_" data-uid="Hi.Geom.Mat4d.Idt*"></a>

  <h3 id="Hi_Geom_Mat4d_Idt" data-uid="Hi.Geom.Mat4d.Idt">
  Idt
  
  </h3>

  <div class="markdown level1 summary"><p>Generate identity matrix.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Mat4d Idt { get; }</code></pre>
  </div>





  <h4 class="section">Property Value</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd></dd>
  </dl>








  <a id="Hi_Geom_Mat4d_IsAllNaN_" data-uid="Hi.Geom.Mat4d.IsAllNaN*"></a>

  <h3 id="Hi_Geom_Mat4d_IsAllNaN" data-uid="Hi.Geom.Mat4d.IsAllNaN">
  IsAllNaN
  
  </h3>

  <div class="markdown level1 summary"><p>Gets a value indicating whether all elements of this matrix are NaN.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public bool IsAllNaN { get; }</code></pre>
  </div>





  <h4 class="section">Property Value</h4>
  <dl class="parameters">
    <dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
    <dd></dd>
  </dl>








  <a id="Hi_Geom_Mat4d_IsFinite_" data-uid="Hi.Geom.Mat4d.IsFinite*"></a>

  <h3 id="Hi_Geom_Mat4d_IsFinite" data-uid="Hi.Geom.Mat4d.IsFinite">
  IsFinite
  
  </h3>

  <div class="markdown level1 summary"><p>Gets a value indicating whether all elements of this matrix are finite numbers.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public bool IsFinite { get; }</code></pre>
  </div>





  <h4 class="section">Property Value</h4>
  <dl class="parameters">
    <dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
    <dd></dd>
  </dl>








  <a id="Hi_Geom_Mat4d_IsRotate_" data-uid="Hi.Geom.Mat4d.IsRotate*"></a>

  <h3 id="Hi_Geom_Mat4d_IsRotate" data-uid="Hi.Geom.Mat4d.IsRotate">
  IsRotate
  
  </h3>

  <div class="markdown level1 summary"><p>Gets a value indicating whether this matrix represents a pure rotation.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public bool IsRotate { get; }</code></pre>
  </div>





  <h4 class="section">Property Value</h4>
  <dl class="parameters">
    <dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
    <dd></dd>
  </dl>








  <a id="Hi_Geom_Mat4d_MatScale_" data-uid="Hi.Geom.Mat4d.MatScale*"></a>

  <h3 id="Hi_Geom_Mat4d_MatScale" data-uid="Hi.Geom.Mat4d.MatScale">
  MatScale
  
  </h3>

  <div class="markdown level1 summary"><p>Gets the scale factor of the matrix, calculated as the cube root of the determinant without translation.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public double MatScale { get; }</code></pre>
  </div>





  <h4 class="section">Property Value</h4>
  <dl class="parameters">
    <dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd></dd>
  </dl>








  <a id="Hi_Geom_Mat4d_NaN_" data-uid="Hi.Geom.Mat4d.NaN*"></a>

  <h3 id="Hi_Geom_Mat4d_NaN" data-uid="Hi.Geom.Mat4d.NaN">
  NaN
  
  </h3>

  <div class="markdown level1 summary"><p>Generate matrix that all elements are nan.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Mat4d NaN { get; }</code></pre>
  </div>





  <h4 class="section">Property Value</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd></dd>
  </dl>








  <a id="Hi_Geom_Mat4d_NativeByteSize_" data-uid="Hi.Geom.Mat4d.NativeByteSize*"></a>

  <h3 id="Hi_Geom_Mat4d_NativeByteSize" data-uid="Hi.Geom.Mat4d.NativeByteSize">
  NativeByteSize
  
  </h3>

  <div class="markdown level1 summary"></div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static int NativeByteSize { get; }</code></pre>
  </div>





  <h4 class="section">Property Value</h4>
  <dl class="parameters">
    <dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
    <dd><p>Byte size: sizeof(double) * 3.</p>
</dd>
  </dl>








  <a id="Hi_Geom_Mat4d_NoTransMat_" data-uid="Hi.Geom.Mat4d.NoTransMat*"></a>

  <h3 id="Hi_Geom_Mat4d_NoTransMat" data-uid="Hi.Geom.Mat4d.NoTransMat">
  NoTransMat
  
  </h3>

  <div class="markdown level1 summary"><p>Generate new matrix that the translation part is zero.
i.e. (m[12],m[13],m[14])=(0,0,0).</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d NoTransMat { get; }</code></pre>
  </div>





  <h4 class="section">Property Value</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd></dd>
  </dl>








  <a id="Hi_Geom_Mat4d_Pn_" data-uid="Hi.Geom.Mat4d.Pn*"></a>

  <h3 id="Hi_Geom_Mat4d_Pn" data-uid="Hi.Geom.Mat4d.Pn">
  Pn
  
  </h3>

  <div class="markdown level1 summary"><p>Pn: the abbr. of Point and Normal.
The value is
<code>new DVec3d(m[12], m[13], m[14], m[8], m[9], m[10])</code></p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public DVec3d Pn { get; }</code></pre>
  </div>





  <h4 class="section">Property Value</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.DVec3d.html">DVec3d</a></dt>
    <dd></dd>
  </dl>








  <a id="Hi_Geom_Mat4d_Trans_" data-uid="Hi.Geom.Mat4d.Trans*"></a>

  <h3 id="Hi_Geom_Mat4d_Trans" data-uid="Hi.Geom.Mat4d.Trans">
  Trans
  
  </h3>

  <div class="markdown level1 summary"><p>Translation.
The value is Vec3d(m[12], m[13], m[14]).</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Vec3d Trans { get; set; }</code></pre>
  </div>





  <h4 class="section">Property Value</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
    <dd></dd>
  </dl>








  <a id="Hi_Geom_Mat4d_TransposeMat_" data-uid="Hi.Geom.Mat4d.TransposeMat*"></a>

  <h3 id="Hi_Geom_Mat4d_TransposeMat" data-uid="Hi.Geom.Mat4d.TransposeMat">
  TransposeMat
  
  </h3>

  <div class="markdown level1 summary"><p>Gets a new matrix that is the transpose of this matrix.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d TransposeMat { get; }</code></pre>
  </div>





  <h4 class="section">Property Value</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd></dd>
  </dl>








  <a id="Hi_Geom_Mat4d_Zero_" data-uid="Hi.Geom.Mat4d.Zero*"></a>

  <h3 id="Hi_Geom_Mat4d_Zero" data-uid="Hi.Geom.Mat4d.Zero">
  Zero
  
  </h3>

  <div class="markdown level1 summary"><p>Generate zero matrix.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Mat4d Zero { get; }</code></pre>
  </div>





  <h4 class="section">Property Value</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd></dd>
  </dl>








  <h2 class="section" id="methods">Methods
</h2>


  <a id="Hi_Geom_Mat4d_AdjustSingularValueByTolerance_" data-uid="Hi.Geom.Mat4d.AdjustSingularValueByTolerance*"></a>

  <h3 id="Hi_Geom_Mat4d_AdjustSingularValueByTolerance_System_Double_" data-uid="Hi.Geom.Mat4d.AdjustSingularValueByTolerance(System.Double)">
  AdjustSingularValueByTolerance(double)
  
  </h3>

  <div class="markdown level1 summary"><p>Adjusts matrix values that are close to 0, 1, or -1 (within the specified tolerance) to exactly those values.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d AdjustSingularValueByTolerance(double tolerance)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>tolerance</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>The tolerance threshold for considering values close to 0, 1, or -1.</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>This matrix after adjustment.</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_At_" data-uid="Hi.Geom.Mat4d.At*"></a>

  <h3 id="Hi_Geom_Mat4d_At_System_Int32_System_Int32_" data-uid="Hi.Geom.Mat4d.At(System.Int32,System.Int32)">
  At(int, int)
  
  </h3>

  <div class="markdown level1 summary"><p>Gets a reference to the matrix element at the specified row and column.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public ref double At(int i, int j)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>i</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
    <dd><p>The row index (0-based).</p>
</dd>
    <dt><code>j</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
    <dd><p>The column index (0-based).</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>A reference to the matrix element.</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_Equals_" data-uid="Hi.Geom.Mat4d.Equals*"></a>

  <h3 id="Hi_Geom_Mat4d_Equals_Hi_Geom_Mat4d_" data-uid="Hi.Geom.Mat4d.Equals(Hi.Geom.Mat4d)">
  Equals(Mat4d)
  
  </h3>

  <div class="markdown level1 summary"><p>Indicates whether the current object is equal to another object of the same type.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public bool Equals(Mat4d other)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>other</code> <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>An object to compare with this object.</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
    <dd><p><a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">true</a> if the current object is equal to the <code class="paramref">other</code> parameter; otherwise, <a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">false</a>.</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_Equals_" data-uid="Hi.Geom.Mat4d.Equals*"></a>

  <h3 id="Hi_Geom_Mat4d_Equals_System_Object_" data-uid="Hi.Geom.Mat4d.Equals(System.Object)">
  Equals(object)
  
  </h3>

  <div class="markdown level1 summary"><p>Determines whether the specified object is equal to the current object.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public override bool Equals(object obj)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>obj</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.object">object</a></dt>
    <dd><p>The object to compare with the current object.</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
    <dd><p><a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">true</a> if the specified object  is equal to the current object; otherwise, <a href="https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/bool">false</a>.</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_EqualsByTolerance_" data-uid="Hi.Geom.Mat4d.EqualsByTolerance*"></a>

  <h3 id="Hi_Geom_Mat4d_EqualsByTolerance_Hi_Geom_Mat4d_System_Double_" data-uid="Hi.Geom.Mat4d.EqualsByTolerance(Hi.Geom.Mat4d,System.Double)">
  EqualsByTolerance(Mat4d, double)
  
  </h3>

  <div class="markdown level1 summary"><p>Determines whether this matrix is equal to another matrix within a specified tolerance.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public bool EqualsByTolerance(Mat4d other, double tolerance)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>other</code> <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>The matrix to compare with this matrix.</p>
</dd>
    <dt><code>tolerance</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>The maximum absolute difference between matrix elements for them to be considered equal.</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
    <dd><p>true if the matrices are equal within the specified tolerance; otherwise, false.</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_FilledMat_" data-uid="Hi.Geom.Mat4d.FilledMat*"></a>

  <h3 id="Hi_Geom_Mat4d_FilledMat_System_Double_" data-uid="Hi.Geom.Mat4d.FilledMat(System.Double)">
  FilledMat(double)
  
  </h3>

  <div class="markdown level1 summary"><p>Creates a matrix with all elements set to the specified value.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Mat4d FilledMat(double v)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>v</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>The value to fill all elements with.</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>A new matrix with all elements set to the specified value.</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_GetHashCode_" data-uid="Hi.Geom.Mat4d.GetHashCode*"></a>

  <h3 id="Hi_Geom_Mat4d_GetHashCode" data-uid="Hi.Geom.Mat4d.GetHashCode">
  GetHashCode()
  
  </h3>

  <div class="markdown level1 summary"><p>Serves as the default hash function.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public override int GetHashCode()</code></pre>
  </div>


  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
    <dd><p>A hash code for the current object.</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_GetInverse_" data-uid="Hi.Geom.Mat4d.GetInverse*"></a>

  <h3 id="Hi_Geom_Mat4d_GetInverse" data-uid="Hi.Geom.Mat4d.GetInverse">
  GetInverse()
  
  </h3>

  <div class="markdown level1 summary"><p>Gets the inverse.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d GetInverse()</code></pre>
  </div>


  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>Inverse matrix</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_GetScaleMat_" data-uid="Hi.Geom.Mat4d.GetScaleMat*"></a>

  <h3 id="Hi_Geom_Mat4d_GetScaleMat_System_Double_" data-uid="Hi.Geom.Mat4d.GetScaleMat(System.Double)">
  GetScaleMat(double)
  
  </h3>

  <div class="markdown level1 summary"><p>Creates a new matrix by scaling this matrix by the specified factor.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d GetScaleMat(double scale)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>scale</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>The scale factor to apply.</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>A new scaled matrix.</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_Inverse_" data-uid="Hi.Geom.Mat4d.Inverse*"></a>

  <h3 id="Hi_Geom_Mat4d_Inverse" data-uid="Hi.Geom.Mat4d.Inverse">
  Inverse()
  
  </h3>

  <div class="markdown level1 summary"><p>Inverses this instance.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d Inverse()</code></pre>
  </div>


  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>this</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_ReadBin_" data-uid="Hi.Geom.Mat4d.ReadBin*"></a>

  <h3 id="Hi_Geom_Mat4d_ReadBin_System_IO_BinaryReader_" data-uid="Hi.Geom.Mat4d.ReadBin(System.IO.BinaryReader)">
  ReadBin(BinaryReader)
  
  </h3>

  <div class="markdown level1 summary"><p>Reads binary data to initialize the object.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public void ReadBin(BinaryReader reader)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>reader</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.io.binaryreader">BinaryReader</a></dt>
    <dd><p>The binary reader to read from</p>
</dd>
  </dl>












  <a id="Hi_Geom_Mat4d_Scale_" data-uid="Hi.Geom.Mat4d.Scale*"></a>

  <h3 id="Hi_Geom_Mat4d_Scale_System_Double_" data-uid="Hi.Geom.Mat4d.Scale(System.Double)">
  Scale(double)
  
  </h3>

  <div class="markdown level1 summary"><p>Scales the specified s.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d Scale(double s)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>s</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>The s.</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>this</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_Set_" data-uid="Hi.Geom.Mat4d.Set*"></a>

  <h3 id="Hi_Geom_Mat4d_Set_Hi_Geom_AxisAngle4d_" data-uid="Hi.Geom.Mat4d.Set(Hi.Geom.AxisAngle4d)">
  Set(AxisAngle4d)
  
  </h3>

  <div class="markdown level1 summary"><p>Set this matrix to rotation matrix.
The matrix is rotate along axis with given radian.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d Set(AxisAngle4d src)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>src</code> <a class="xref" href="Hi.Geom.AxisAngle4d.html">AxisAngle4d</a></dt>
    <dd><p>src</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>this</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_Set_" data-uid="Hi.Geom.Mat4d.Set*"></a>

  <h3 id="Hi_Geom_Mat4d_Set_Hi_Geom_Mat4d_" data-uid="Hi.Geom.Mat4d.Set(Hi.Geom.Mat4d)">
  Set(Mat4d)
  
  </h3>

  <div class="markdown level1 summary"><p>copy the data from src to this.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d Set(Mat4d src)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>src</code> <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>src</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>this</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_Set_" data-uid="Hi.Geom.Mat4d.Set*"></a>

  <h3 id="Hi_Geom_Mat4d_Set_Hi_Geom_Vec3d_" data-uid="Hi.Geom.Mat4d.Set(Hi.Geom.Vec3d)">
  Set(Vec3d)
  
  </h3>

  <div class="markdown level1 summary"><p>Set this matrix to translation matrix.
m(3,0)=trans.x; m(3,1)=trans.y; m(3,2)=trans.z.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d Set(Vec3d trans)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>trans</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
    <dd><p>translation</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>this</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_Set_" data-uid="Hi.Geom.Mat4d.Set*"></a>

  <h3 id="Hi_Geom_Mat4d_Set_Hi_Geom_Vec3d_System_Double_" data-uid="Hi.Geom.Mat4d.Set(Hi.Geom.Vec3d,System.Double)">
  Set(Vec3d, double)
  
  </h3>

  <div class="markdown level1 summary"><p>Set this matrix to rotation matrix.
The matrix is rotate along axis with given radian.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d Set(Vec3d axis, double rad)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>axis</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
    <dd><p>rotation axis</p>
</dd>
    <dt><code>rad</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>radian</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>this</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_Set_" data-uid="Hi.Geom.Mat4d.Set*"></a>

  <h3 id="Hi_Geom_Mat4d_Set_Hi_Geom_Vec3d_System_Double_Hi_Geom_Vec3d_" data-uid="Hi.Geom.Mat4d.Set(Hi.Geom.Vec3d,System.Double,Hi.Geom.Vec3d)">
  Set(Vec3d, double, Vec3d)
  
  </h3>

  <div class="markdown level1 summary"><p>Set the matrix rotation at <code class="paramref">pivot</code> along <code class="paramref">axis</code> by angle <code class="paramref">rad</code>.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d Set(Vec3d axis, double rad, Vec3d pivot)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>axis</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
    <dd><p>rotation axis</p>
</dd>
    <dt><code>rad</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>angle</p>
</dd>
    <dt><code>pivot</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
    <dd><p>rotation pivot</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p><code>this</code></p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_Set_" data-uid="Hi.Geom.Mat4d.Set*"></a>

  <h3 id="Hi_Geom_Mat4d_Set_Hi_Native_mat4d_" data-uid="Hi.Geom.Mat4d.Set(Hi.Native.mat4d)">
  Set(mat4d)
  
  </h3>

  <div class="markdown level1 summary"><p>Set the data by <code class="paramref">src</code>.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d Set(mat4d src)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>src</code> <a class="xref" href="Hi.Native.mat4d.html">mat4d</a></dt>
    <dd><p>src</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>this</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_Set_" data-uid="Hi.Geom.Mat4d.Set*"></a>

  <h3 id="Hi_Geom_Mat4d_Set_System_Double_" data-uid="Hi.Geom.Mat4d.Set(System.Double)">
  Set(double)
  
  </h3>

  <div class="markdown level1 summary"><p>The matrix will be reset to a scale matrix which is I*scale.
Where I is an identity matrix.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d Set(double scale)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>scale</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>scale</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>this</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_Set_" data-uid="Hi.Geom.Mat4d.Set*"></a>

  <h3 id="Hi_Geom_Mat4d_Set_System_Double_System_Double_System_Double_System_Double_System_Double_System_Double_System_Double_System_Double_System_Double_System_Double_System_Double_System_Double_System_Double_System_Double_System_Double_System_Double_" data-uid="Hi.Geom.Mat4d.Set(System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double,System.Double)">
  Set(double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double)
  
  </h3>

  <div class="markdown level1 summary"><p>constructor</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d Set(double m00, double m01, double m02, double m03, double m10, double m11, double m12, double m13, double m20, double m21, double m22, double m23, double m30, double m31, double m32, double m33)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>m00</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (0,0)</p>
</dd>
    <dt><code>m01</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (0,1)</p>
</dd>
    <dt><code>m02</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (0,2)</p>
</dd>
    <dt><code>m03</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (0,3)</p>
</dd>
    <dt><code>m10</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (1,0)</p>
</dd>
    <dt><code>m11</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (1,1)</p>
</dd>
    <dt><code>m12</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (1,2)</p>
</dd>
    <dt><code>m13</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (1,3)</p>
</dd>
    <dt><code>m20</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (2,0)</p>
</dd>
    <dt><code>m21</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (2,1)</p>
</dd>
    <dt><code>m22</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (2,2)</p>
</dd>
    <dt><code>m23</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (2,3)</p>
</dd>
    <dt><code>m30</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (3,0)</p>
</dd>
    <dt><code>m31</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (3,1)</p>
</dd>
    <dt><code>m32</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (3,2)</p>
</dd>
    <dt><code>m33</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>value at (3,3)</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>this</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_Set_" data-uid="Hi.Geom.Mat4d.Set*"></a>

  <h3 id="Hi_Geom_Mat4d_Set_System_Int32_System_Int32_System_Double_" data-uid="Hi.Geom.Mat4d.Set(System.Int32,System.Int32,System.Double)">
  Set(int, int, double)
  
  </h3>

  <div class="markdown level1 summary"><p>Sets the value of the matrix element at the specified row and column.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public void Set(int i, int j, double v)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>i</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
    <dd><p>The row index (0-based).</p>
</dd>
    <dt><code>j</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.int32">int</a></dt>
    <dd><p>The column index (0-based).</p>
</dd>
    <dt><code>v</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>The value to set.</p>
</dd>
  </dl>












  <a id="Hi_Geom_Mat4d_Set_" data-uid="Hi.Geom.Mat4d.Set*"></a>

  <h3 id="Hi_Geom_Mat4d_Set_System_String_" data-uid="Hi.Geom.Mat4d.Set(System.String)">
  Set(string)
  
  </h3>

  <div class="markdown level1 summary"><p>Set data by <code class="paramref">str</code>.
The format is <code>{0,1,2,3,...,15}</code></p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d Set(string str)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>str</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
    <dd><p>src</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>this</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_SetIdt_" data-uid="Hi.Geom.Mat4d.SetIdt*"></a>

  <h3 id="Hi_Geom_Mat4d_SetIdt" data-uid="Hi.Geom.Mat4d.SetIdt">
  SetIdt()
  
  </h3>

  <div class="markdown level1 summary"><p>Set this instance to identity matrix.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public void SetIdt()</code></pre>
  </div>













  <a id="Hi_Geom_Mat4d_SetNoTrans_" data-uid="Hi.Geom.Mat4d.SetNoTrans*"></a>

  <h3 id="Hi_Geom_Mat4d_SetNoTrans" data-uid="Hi.Geom.Mat4d.SetNoTrans">
  SetNoTrans()
  
  </h3>

  <div class="markdown level1 summary"><p>Sets the translation components of this matrix to zero.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d SetNoTrans()</code></pre>
  </div>


  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>This matrix with translation components set to zero.</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_ToBriefString_" data-uid="Hi.Geom.Mat4d.ToBriefString*"></a>

  <h3 id="Hi_Geom_Mat4d_ToBriefString" data-uid="Hi.Geom.Mat4d.ToBriefString">
  ToBriefString()
  
  </h3>

  <div class="markdown level1 summary"><p>To brief string.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public string ToBriefString()</code></pre>
  </div>


  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
    <dd><p>brief string.</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_ToLinesString_" data-uid="Hi.Geom.Mat4d.ToLinesString*"></a>

  <h3 id="Hi_Geom_Mat4d_ToLinesString" data-uid="Hi.Geom.Mat4d.ToLinesString">
  ToLinesString()
  
  </h3>

  <div class="markdown level1 summary"><p>Converts the matrix to a multi-line string representation with aligned columns.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public string ToLinesString()</code></pre>
  </div>


  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
    <dd><p>A formatted multi-line string representation of the matrix.</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_ToString_" data-uid="Hi.Geom.Mat4d.ToString*"></a>

  <h3 id="Hi_Geom_Mat4d_ToString" data-uid="Hi.Geom.Mat4d.ToString">
  ToString()
  
  </h3>

  <div class="markdown level1 summary"><p>Returns a string that represents the current object.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public override string ToString()</code></pre>
  </div>


  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.string">string</a></dt>
    <dd><p>A string that represents the current object.</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_Transpose_" data-uid="Hi.Geom.Mat4d.Transpose*"></a>

  <h3 id="Hi_Geom_Mat4d_Transpose" data-uid="Hi.Geom.Mat4d.Transpose">
  Transpose()
  
  </h3>

  <div class="markdown level1 summary"><p>Transposes this matrix in place.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public Mat4d Transpose()</code></pre>
  </div>


  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>This matrix after transposition.</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_WriteBin_" data-uid="Hi.Geom.Mat4d.WriteBin*"></a>

  <h3 id="Hi_Geom_Mat4d_WriteBin_System_IO_BinaryWriter_" data-uid="Hi.Geom.Mat4d.WriteBin(System.IO.BinaryWriter)">
  WriteBin(BinaryWriter)
  
  </h3>

  <div class="markdown level1 summary"><p>Writes the object's data to a binary stream.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public void WriteBin(BinaryWriter writer)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>writer</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.io.binarywriter">BinaryWriter</a></dt>
    <dd><p>The binary writer to write to</p>
</dd>
  </dl>












  <h2 class="section" id="operators">Operators
</h2>


  <a id="Hi_Geom_Mat4d_op_Addition_" data-uid="Hi.Geom.Mat4d.op_Addition*"></a>

  <h3 id="Hi_Geom_Mat4d_op_Addition_Hi_Geom_Mat4d_Hi_Geom_Mat4d_" data-uid="Hi.Geom.Mat4d.op_Addition(Hi.Geom.Mat4d,Hi.Geom.Mat4d)">
  operator +(Mat4d, Mat4d)
  
  </h3>

  <div class="markdown level1 summary"><p>Adds two matrices element-wise.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Mat4d operator +(Mat4d a, Mat4d b)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>a</code> <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>The first matrix.</p>
</dd>
    <dt><code>b</code> <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>The second matrix.</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>A new matrix that is the sum of the two matrices.</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_op_Division_" data-uid="Hi.Geom.Mat4d.op_Division*"></a>

  <h3 id="Hi_Geom_Mat4d_op_Division_Hi_Geom_Mat4d_System_Double_" data-uid="Hi.Geom.Mat4d.op_Division(Hi.Geom.Mat4d,System.Double)">
  operator /(Mat4d, double)
  
  </h3>

  <div class="markdown level1 summary"><p>Divides a matrix by a scalar value.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Mat4d operator /(Mat4d a, double b)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>a</code> <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>The matrix to divide.</p>
</dd>
    <dt><code>b</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>The scalar divisor.</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>A new matrix with all elements divided by the scalar.</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_op_Equality_" data-uid="Hi.Geom.Mat4d.op_Equality*"></a>

  <h3 id="Hi_Geom_Mat4d_op_Equality_Hi_Geom_Mat4d_Hi_Geom_Mat4d_" data-uid="Hi.Geom.Mat4d.op_Equality(Hi.Geom.Mat4d,Hi.Geom.Mat4d)">
  operator ==(Mat4d, Mat4d)
  
  </h3>

  <div class="markdown level1 summary"><p>Determines whether two matrices are equal.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static bool operator ==(Mat4d a, Mat4d b)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>a</code> <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>The first matrix.</p>
</dd>
    <dt><code>b</code> <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>The second matrix.</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
    <dd><p>true if the matrices are equal; otherwise, false.</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_op_Inequality_" data-uid="Hi.Geom.Mat4d.op_Inequality*"></a>

  <h3 id="Hi_Geom_Mat4d_op_Inequality_Hi_Geom_Mat4d_Hi_Geom_Mat4d_" data-uid="Hi.Geom.Mat4d.op_Inequality(Hi.Geom.Mat4d,Hi.Geom.Mat4d)">
  operator !=(Mat4d, Mat4d)
  
  </h3>

  <div class="markdown level1 summary"><p>Determines whether two matrices are not equal.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static bool operator !=(Mat4d a, Mat4d b)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>a</code> <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>The first matrix.</p>
</dd>
    <dt><code>b</code> <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>The second matrix.</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="https://learn.microsoft.com/dotnet/api/system.boolean">bool</a></dt>
    <dd><p>true if the matrices are not equal; otherwise, false.</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_op_Multiply_" data-uid="Hi.Geom.Mat4d.op_Multiply*"></a>

  <h3 id="Hi_Geom_Mat4d_op_Multiply_Hi_Geom_Mat4d_Hi_Geom_DVec3d_" data-uid="Hi.Geom.Mat4d.op_Multiply(Hi.Geom.Mat4d,Hi.Geom.DVec3d)">
  operator *(Mat4d, DVec3d)
  
  </h3>

  <div class="markdown level1 summary"><p>Multiple matrxi to cutter location (Point and Normal).</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static DVec3d operator *(Mat4d m, DVec3d v)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>m</code> <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>matrix</p>
</dd>
    <dt><code>v</code> <a class="xref" href="Hi.Geom.DVec3d.html">DVec3d</a></dt>
    <dd><p>point and normal</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.DVec3d.html">DVec3d</a></dt>
    <dd><p>transformed point and normal</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_op_Multiply_" data-uid="Hi.Geom.Mat4d.op_Multiply*"></a>

  <h3 id="Hi_Geom_Mat4d_op_Multiply_Hi_Geom_Mat4d_Hi_Geom_Mat4d_" data-uid="Hi.Geom.Mat4d.op_Multiply(Hi.Geom.Mat4d,Hi.Geom.Mat4d)">
  operator *(Mat4d, Mat4d)
  
  </h3>

  <div class="markdown level1 summary"><p>Multiplies two matrices.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Mat4d operator *(Mat4d a, Mat4d b)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>a</code> <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>The first matrix.</p>
</dd>
    <dt><code>b</code> <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>The second matrix.</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>A new matrix that is the product of the two matrices.</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_op_Multiply_" data-uid="Hi.Geom.Mat4d.op_Multiply*"></a>

  <h3 id="Hi_Geom_Mat4d_op_Multiply_Hi_Geom_Mat4d_Hi_Geom_Vec3d_" data-uid="Hi.Geom.Mat4d.op_Multiply(Hi.Geom.Mat4d,Hi.Geom.Vec3d)">
  operator *(Mat4d, Vec3d)
  
  </h3>

  <div class="markdown level1 summary"><p>Multiplies a matrix by a vector, transforming the vector.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Vec3d operator *(Mat4d a, Vec3d b)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>a</code> <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>The transformation matrix.</p>
</dd>
    <dt><code>b</code> <a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
    <dd><p>The vector to transform.</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Vec3d.html">Vec3d</a></dt>
    <dd><p>The transformed vector.</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_op_Multiply_" data-uid="Hi.Geom.Mat4d.op_Multiply*"></a>

  <h3 id="Hi_Geom_Mat4d_op_Multiply_Hi_Geom_Mat4d_System_Double_" data-uid="Hi.Geom.Mat4d.op_Multiply(Hi.Geom.Mat4d,System.Double)">
  operator *(Mat4d, double)
  
  </h3>

  <div class="markdown level1 summary"><p>Multiplies a matrix by a scalar value.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Mat4d operator *(Mat4d a, double s)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>a</code> <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>The matrix to multiply.</p>
</dd>
    <dt><code>s</code> <a class="xref" href="https://learn.microsoft.com/dotnet/api/system.double">double</a></dt>
    <dd><p>The scalar value.</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>A new matrix with all elements multiplied by the scalar.</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_op_Subtraction_" data-uid="Hi.Geom.Mat4d.op_Subtraction*"></a>

  <h3 id="Hi_Geom_Mat4d_op_Subtraction_Hi_Geom_Mat4d_Hi_Geom_Mat4d_" data-uid="Hi.Geom.Mat4d.op_Subtraction(Hi.Geom.Mat4d,Hi.Geom.Mat4d)">
  operator -(Mat4d, Mat4d)
  
  </h3>

  <div class="markdown level1 summary"><p>Subtracts the second matrix from the first matrix element-wise.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Mat4d operator -(Mat4d a, Mat4d b)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>a</code> <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>The matrix to subtract from.</p>
</dd>
    <dt><code>b</code> <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>The matrix to subtract.</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>A new matrix that is the difference of the two matrices.</p>
</dd>
  </dl>











  <a id="Hi_Geom_Mat4d_op_UnaryNegation_" data-uid="Hi.Geom.Mat4d.op_UnaryNegation*"></a>

  <h3 id="Hi_Geom_Mat4d_op_UnaryNegation_Hi_Geom_Mat4d_" data-uid="Hi.Geom.Mat4d.op_UnaryNegation(Hi.Geom.Mat4d)">
  operator -(Mat4d)
  
  </h3>

  <div class="markdown level1 summary"><p>Returns the negation of the specified matrix.</p>
</div>
  <div class="markdown level1 conceptual"></div>

  <div class="codewrapper">
    <pre><code class="lang-csharp hljs">public static Mat4d operator -(Mat4d src)</code></pre>
  </div>

  <h4 class="section">Parameters</h4>
  <dl class="parameters">
    <dt><code>src</code> <a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>The source matrix.</p>
</dd>
  </dl>

  <h4 class="section">Returns</h4>
  <dl class="parameters">
    <dt><a class="xref" href="Hi.Geom.Mat4d.html">Mat4d</a></dt>
    <dd><p>A new matrix with all elements negated.</p>
</dd>
  </dl>












</article>

        <div class="contribution d-print-none">
        </div>


      </div>

      <div class="affix">
        <nav id="affix"></nav>
      </div>
    </main>

    <div class="container-xxl search-results" id="search-results"></div>

    <footer class="border-top text-secondary">
      <div class="container-xxl">
        <div class="flex-fill">
          <span> Copyright © 2025 <a href='https://superhightech.com.tw'>Tech Coordinate</a>. All rights reserved. <a href='https://superhightech.com.tw'>超級高科技股份有限公司</a> © 2025 版權所有 </span>
        </div>
      </div>
    </footer>
  </body>
</html>
